<?php

namespace app\index\command;

use app\index\controller\Crontab;
use app\index\controller\Crontask;
use think\Config;
use think\console\Input;
use think\console\Output;
use think\Log;

/**
 * scan()方法由系统Cli定期调用，实现封禁账号逾期解禁
 */
class Unseal extends Crontask
{

    //间隔时间 60秒*60分钟=1小时
    //
    protected $interval = 3600;

    //配置描述
    //
    protected function configure()
    {
        $this->setName('scan')

            ->setDescription('Unseal baned Account');
    }
    /**
     * 封禁账号定期解锁
     * @return   void
     */
    protected function execute(Input $input, Output $output)
    {

        try {

            //日志目录
            //
            $this->logInit('scan');

            //实例化任务
            //
            $schedule = new Crontab();

            while (1) {

                //日志记录开始时间
                //
                $id = $this->addStartLog('scan');

                //执行账号扫描
                //
                $schedule->scan();

                //日志记录结束时间
                //
                $this->addEndLog('scan', $id);

                //时间间隔
                //
                sleep($this->interval);
            }

        } catch (\Exception $e) {
            Log::record($e->getMessage(), 'log');
            throw new \think\Exception('异常消息:' . $e->getMessage());
        }
    }
}
